const Koa = require('koa')
const path = require('path')
const app = new Koa()
const { secret } = require('./utils/jwt') // JWT 密钥
const { Result } = require('./utils')
const errorMiddleware = require('./middleware/error') // 错误处理中间件
const bodyParser = require('koa-bodyparser')
const koaStatic = require('koa-static')

const jwt = require('koa-jwt')

// 静态文件服务,访问的时候要省略uploads
app.use(koaStatic(path.join(__dirname, 'uploads'))) // 提供上传文件的静态资源服务

// 解析body
app.use(bodyParser())
const { initRouter } = require('./routes/index')

// 错误处理中间件
app.use(errorMiddleware)

app.use(jwt({ secret }).unless({ path: [/^\/v1\/sys/, /^\/uploads/] })) // 除了 /api/auth 路径外，其他路径都需要 JWT 鉴权

// 初始化路由
initRouter(app)
// // Custom 401 handling if you don't want to expose koa-jwt errors to users
// app.use(function(ctx, next){
//   return next().catch((err) => {
//     if (401 == err.status) {
//       ctx.status = 401;
//       ctx.body = Result.error(401, '暂无权限,请先登录');
//     } else {
//       throw err;
//     }
//   });
// });

app.listen(3000)
